<?php
class FechaComponent extends Object{

	//este agregaR n meses en el formato YMD
	function formatear($fecha) {
		$fecha_db = explode("/",$fecha);
		if(sizeof($fecha_db) == 1) {
			$fecha_db = explode("-",$fecha);
		}
			
		//Cambia de dmy a ymd	
		if(strlen($fecha_db[2])==4) {
			$fecha_inicial = mktime(0,0,0,$fecha_db[1], $fecha_db[0], $fecha_db[2]);
			return date("Y-m-d", $fecha_inicial);
		} else if(strlen($fecha_db[0])==4) {
			$fecha_inicial = mktime(0,0,0,$fecha_db[1], $fecha_db[2], $fecha_db[0]);
			return date("d-m-Y", $fecha_inicial);
		}
	}

	function agregar_mes($fecha, $mes_add, $formato){
		$fecha_db = explode("/",$fecha);
		if(sizeof($fecha_db) == 1)
		$fecha_db = explode("-",$fecha);
		if($formato == 'ymd') {
			$fecha_inicial = mktime(0,0,0,$fecha_db[1] + $mes_add, 28, $fecha_db[0]);
			return date("Y-m-d", $fecha_inicial);
		} else if ($formato == 'dmy') {
			$fecha_inicial = mktime(0,0,0,$fecha_db[1] + $mes_add, 28, $fecha_db[2]);
			return date("d-m-Y", $fecha_inicial);
		}
	}
	
	function agregar_mes2($fecha, $mes_add, $formato){
		$fecha_db = explode("/",$fecha);
		if(sizeof($fecha_db) == 1)
		$fecha_db = explode("-",$fecha);
		if($formato == 'ymd') {
			$fecha_inicial = mktime(0,0,0,$fecha_db[1] + $mes_add, $fecha_db[2], $fecha_db[0]);
			return date("Y-m-d", $fecha_inicial);
		} else if ($formato == 'dmy') {
			$fecha_inicial = mktime(0,0,0,$fecha_db[1] + $mes_add, $fecha_db[0], $fecha_db[2]);
			return date("d-m-Y", $fecha_inicial);
		}
	}
	
	function agregar($fecha, $arreglo, $formato) {
		$fecha_db = explode("/",$fecha);
		if(sizeof($fecha_db) == 1) {
			$fecha_db = explode("-",$fecha);
		}
		$dia = $mes = $year = 0;
		foreach($arreglo as $k => $v) {
			$valor = $v;
			$tipo = $k;
			switch($k) {
				case 'D': case 'd':
					$dia = $v;
					break;
				case 'M': case 'm':
					$mes = $v;
					break;
				case 'Y': case 'y':
					$year = $v;
					break;
			}		
		}		
		if($formato == 'ymd') {
			$fecha_inicial = mktime(0,0,0,$fecha_db[1] + $mes, $fecha_db[2] + $dia, $fecha_db[0] + $year);
			return date("Y-m-d", $fecha_inicial);
		} else if ($formato == 'dmy') {
			$fecha_inicial = mktime(0,0,0,$fecha_db[1] + $mes, $fecha_db[0] + $dia, $fecha_db[2] + $year);
			return date("d-m-Y", $fecha_inicial);
		}
	}

	function restar($ini, $fin){
		$fecha_ini = $ini;
		$fecha_fin = $fin;
			
		$anios_diff = date("Y", strtotime($fecha_fin)) - date("Y", strtotime($fecha_ini));
		$mes_diff = date("m", strtotime($fecha_fin)) - date("m", strtotime($fecha_ini));
			
		return $mes_diff + ($anios_diff * 12);
	}

	function ahora(){
		return date("Y-m-d");
	}

	//Esta funcion transforma un funcion con las variables especificas
	//Si estan vacias las variables les agrega las correspondientes a la fecha actual
	function crear_fecha($d, $m, $y, $referencia){
		if(empty($referencia)) {
			if(empty($d)){
				$d = date("d");
			}
			if(empty($m)){
				$m = date("m");
			}
			if(empty($y)){
				$y = date("Y");
			}
		} else {
			$a = explode($referencia, '-');
			if(empty($d)){
				$d = date("d", strtotime($referencia));
			}
			if(empty($m)){
				$m = date("m", strtotime($referencia));
			}
			if(empty($y)){
				$y = date("y", strtotime($referencia));
			}
		}
		return date("Y-m-d", mktime(0,0,0,$m,$d,$y));
	}

	function relacion($a, $b){
		$aa = strtotime($a);
		$bb = strtotime($b);
		if($aa < $bb) return -1;
		else if($aa == $bb) return 0;
		else return 1;
	}

	function relacion2($a, $b, $rel) {
		$aa = strtotime($a);
		$bb = strtotime($b);
		switch($rel) {
			case "=":
				return ($aa == $bb);
				break;
			case "<":
				return ($aa < $bb);
				break;
			case ">":
				return ($aa > $bb);
				break;
			case "<=":
				return ($aa <= $bb);
				break;
			case ">=":
				return ($aa >= $bb);
				break;
			case "!=":
				return ($aa != $bb);
				break;
		}
	}
}
?>